package com.hezuti.common.filemonitor;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 对本地文件操作的支持<br/>
 * 文件路径： filePath<br/>
 * 更新周期：<br/>
 * 实例需要 重写 reLoad()方法；<br/>
 * 
 * @author dxy
 */
public abstract class FileSupport {

    protected Log	 logger      = LogFactory.getLog(getClass());
    protected FileMonitor fileMonitor = FileMonitor.getInstance();

    /** 文件监控周期 */
    protected int	 period;

    /** 本地文件路径一般文件存放在data目录下 */
    protected String      filePath;

    /** 文件编码方式 */
    protected String      fileEncode;

    /** 第一次加载文件到内存 */
    public abstract void loadFile();

    /** 对文件进行监控 一旦改变会执行loadFile()方法 */
    protected void check() {
	if (period > 0) {
	    fileMonitor.addFileChangeListener(new FileChangeListener() {

		@Override
		public void fileChanged(String filename) {
		    loadFile();
		}
	    }, getClass().getResource("/").getFile() + filePath, period);
	}
    }

    public String getFilePath() {
	return filePath;
    }

    public void setFilePath(String filePath) {
	this.filePath = filePath;
    }

    public String getFileEncode() {
	return fileEncode;
    }

    public void setFileEncode(String fileEncode) {
	this.fileEncode = fileEncode;
    }

}
